import plotly.express as px
import pandas as pd
import random
import os
import json
import plotly.graph_objects as go
DATA=pd.read_csv(r'C:\Users\MANU\PycharmProjects\ftls_v11-4CLASSES_sensitivity\ftls_events\2019_07_06_T_03_19_53_M71CAL_congiunta\calc_parts\Tab_congiunta_red.csv')
from datetime import datetime, timedelta
DATA['las_tdate'] = pd.to_datetime(DATA['last_date'])
DATA = DATA.dropna(subset=['B_perc'])
DATA['dimo']=0.005
data = pd.DataFrame({'x': DATA['last_date'],
'y': DATA['N_step'],
'values': DATA['B_perc']})
with open(os.path.join(r'C:\Users\MANU\PycharmProjects\ftls_v11-4CLASSES_sensitivity\ftls_events\2019_07_04_T_17_33_49_M64CAL_congiunta','config', 'main_event.json'), "r") as json_file:
mainevt_1 = json.load(json_file)
mainevent_1 = pd.Series(mainevt_1)
mainevent_1['fulldate'] = datetime(**mainevent_1[['year', 'day', 'month', 'hour', 'minute']].astype(int).to_dict()
) + timedelta(seconds=mainevent_1.at['second'])
with open(os.path.join(r'C:\Users\MANU\PycharmProjects\ftls_v11-4CLASSES_sensitivity\ftls_events\2019_07_06_T_03_19_53_M71CAL_congiunta','config', 'main_event.json'), "r") as json_file:
mainevt_2 = json.load(json_file)
mainevent_2 = pd.Series(mainevt_2)
mainevent_2['fulldate'] = datetime(**mainevent_2[['year', 'day', 'month', 'hour', 'minute']].astype(int).to_dict()
) + timedelta(seconds=mainevent_2.at['second'])
# # Crea uno scatterplot con scala di colori personalizzata (giallo più acceso)
# fig = px.scatter(data, x='x', y='y', color='values',
# color_continuous_scale=['red', 'yellow', 'green'], # Personalizza la scala dei colori
# color_continuous_midpoint=100, # Imposta il valore centrale,
# labels={'values': 'Valori'},
# )
# # Imposta il titolo del grafico
# fig.update_layout(title='Scatterplot con scala di colori personalizzata')
# # Mostra il grafico
# fig.show()
# fig = go.Figure(data=go.Scatter(x=data['x'], y=data['y'],
# marker=dict(size=5, symbol='square', color=data['values'],
# colorscale='RdYlGn', colorbar=dict(title='Values')),
# mode='markers'))
# Aggiungi le due linee verticali come tracce separate con nomi
fig.add_trace(go.Scatter(x=[mainevent_1['fulldate'], mainevent_1['fulldate']],
y=[100, 100], mode='lines', name='b reference', line=dict(color='black', dash='dash')))
fig.add_shape(
go.layout.Shape(
type="line",
x0=mainevent_2['fulldate'],
x1=mainevent_2['fulldate'],
y0=100,
y1=400,
line=dict(color="black", width=3, dash='dash'),
name='Main event'
)
)
# Imposta il titolo del grafico
# Mostra la legenda
# Regola il valore di x per posizionare la colorbar a sinistra
fig.update_layout(
plot_bgcolor='white', # Sfondo bianco
xaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2), # Griglia nera per l'asse x con contorno
yaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2), # Griglia nera per l'asse y con contorno
)
# Mostra il grafico
fig.show()
colorscale = [[0, 'red'], [0.34, 'yellow'], [1, 'green']]
fig = go.Figure(data=go.Scatter(x=data['x'], y=data['y'],
marker=dict(size=5, symbol='square', color=data['values'],
colorscale=colorscale, colorbar=dict(title='Valori')),
mode='markers',
text=data.apply(lambda row: f'Date={row["x"]}\nN_post={row["y"]}\nb_perc={row["values"]}', axis=1)))
# Imposta il titolo del grafico
# fig.add_trace(go.Scatter(x=[mainevent_1['fulldate'], mainevent_1['fulldate']],
# y=[100, 400], mode='lines', line=dict(color='black', dash='dash')))
fig.add_shape(
go.layout.Shape(
type="line",
x0=mainevent_2['fulldate'],
x1=mainevent_2['fulldate'],
y0=100,
y1=420,
line=dict(color="black", width=3, dash='dash'),
name='Main event'
)
)
fig.add_shape(
go.layout.Shape(
type="line",
x0=mainevent_1['fulldate'],
x1=mainevent_1['fulldate'],
y0=100,
y1=420,
line=dict(color="black", width=3, dash='dash'),
name='Main event'
)
)
# Mostra il grafico
fig.update_layout(title='Scatterplot con scala di colori personalizzata e quadratini centrata su 100')
fig.update_layout(
plot_bgcolor='white', # Sfondo bianco
xaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2), # Griglia nera per l'asse x con contorno
yaxis=dict(showgrid=True, gridcolor='grey', showline=True, linecolor='black', linewidth=2) # Griglia nera per l'asse y con contorno
)
fig.update_xaxes(range=[mainevent_1['fulldate']- pd.DateOffset(days=0.5), mainevent_2['fulldate'] + pd.DateOffset(days=4.2)])
# Mostra il grafico
fig.show()